home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
DiskUtil
/
Crunch
/
XFH
/
XFH.DOC
< prev
next >
Wrap
Text File
|
1994-05-06
|
17KB
|
376 lines
----------------------------------------------------------------------------
XFH-Handler 1.39
Copyright (C) 1991, 1992, 1993, 1994 Kristian Nielsen.
----------------------------------------------------------------------------
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Comments, suggestions and bug reports are welcome. I can be reached as
Kristian Nielsen
Groenjordskollegiet
room 6111
Groenjordsvej
DK-2300 Koebenhavn S
Denmark.
E-Mail: bombadil@diku.dk
Legal Issues
------------
This program as a whole is distributed under the GNU General Public
License. However, some of the contained material carries different
legal status. In particular, this product includes software developed
by the University of California, Berkeley and its contributors.
Details appear in each individual file in the source directories.
The "XFH" commodity was written by
Nicola Salmoria
Via Piemonte 11
53100 Siena ITALY
E-Mail: MC6489@mclink.it
This program (the commodity with icons and mountlists) is freely
distributable as long as the archive remains intact, and only a
nominal fee is charged for its distribution. However, it is still
provided "AS IS" without warranty of any kind, either expressed or
implied. By using it, you agree to accept the entire risk as to the
quality and performance of the program.
Version after 1.32 and "xScan" were done by:
Matthias Scheler
Schuetzenstrasse 18
33178 Borchen
Federal Republic of Germany
E-Mail: tron@lyssa.pb.owl.de
Changes since the previous versions
-----------------------------------
Changes since last release V1.34:
- more 2.0 packets including support for hard- and softlinks
- extended builtin support for xScan
- XFH is now distributed with full source code for SAS/C Release 6.51.
- kludge to get XFH to work on top of Envoy FS
Changes since last release V1.32:
- After using the supplied tool "xScan" XFH will read directories MUCH
faster. Read "xScan.doc" for information about that.
- XFH now supports ACTION_PARENT_FH. Now MultiView and "amigaguide.datatype"
have no more problems to use links between different AmigaGuide files.
- XFH is now distributed with full source code for SAS/C Release 6.
Important changes include since V1.12:
- XFH is now distributed with full source code (for GCC).
- The dreaded 'ExNext() / ExAll() bug with filenotes has been fixed.
- Much improved user interface: Gui 'front panel' (by Nicola
Salmoria), improved mountlist control.
- Arexx interface for setting options after mounting the handler.
- Support for MODE_READWRITE (appending to files).
Overview
--------
XFH-handler is a DOS handler which uses xpkmaster.library to provide
transparent access to compressed files in a given directory or partition.
All compression/decompression is done automatically by the handler when files
are read or written. Compression is optional and may be switched at any time,
allowing for fine control over storage of data. The compression method may be
changed at will. Decompression is always automatic, you don't have to care
about which compressor was used to create the files.
This version of XFH is designed to work with Xpk, the data compression
standard. You will need Xpk to use XFH. Most users should receive XFH as part
of the Xpk distribution.
[Notes for users of previous versions of XFH: The way the handler is mounted
has changed somewhat since v1.12 in order to make it simpler to use; you
cannot just replace the binary in L: and go. This doc file does not mention
the old option files, but they can still be used if you want to. Refer to the
file "advanced_usage.doc". Also note that XFH now supports updating of
existing files, something that a lot of users have requested.]
Installation
------------
This doc file is intended for Workbench 2.0 or later. If you are using
Wb 1.x, refer to "advanced_usage.doc". That file contains also information
which may be useful to the advanced user.
We have tried to make the installation of XFH as easy as possible, but it
still isn't a trivial task. Please read this paragraph carefully.
First of all, you will need to have xpkmaster.library installed
(xpkmaster.library is distributed as part of Xpk). Refer to xpkmaster
documentation for installation. Version 2.2 (or any later version) of
xpkmaster.library is suggested, since previous versions contain some bugs
which may make XFH behave incorrectly.
Then, copy "XFH-Handler" to your L: directory, and drag "XFH" into the
Wbstartup drawer. XFH is a commodity, so as usual you will want to change
the CX_POPUP ToolType from YES to NO to avoid having the window open
everytime you boot.
Now you have to decide which partition you want to install XFH upon. Of
course you can choose more than one partition, but with this version of XFH
you shouldn't use the boot partition unless you really know what you are
doing.
>> NEVER COMPRESS XFH-HANDLER, XPKMASTER.LIBRARY, MOUNT, OR ANY OTHER FILE
NEEDED TO MAKE XFH WORK!!!!!! <<
You are not limited to install on full partitions; you can choose any
directory, but usage on a whole partition is probably the more immediate and
useful. Here, we will assume installation on a whole partition. Installation
over a directory is accomplished in a similar way, or by modifying the
mountlist entry as explained in "advanced_usage.doc".
If you are using Workbench 2.1 or later, drag the icon "XDH1" from the
"Workbench2.1+" drawer to the "Devs/DOSDrivers" drawer in your boot
partition. As its name suggests, XDH1 will work on your DH1 partition.
To choose a different partition, just rename the icon; for example, "XJH2"
will refer to JH2:, and so on (in fact any letter will work, not just
'X'). You can also use assigned names; for example, let's say you have
assigned DOCS: to DH2:text/docs, then a copy of the icon named "XDOCS"
will create an XFH task using that directory. To create multiple XFH
partitions, use the Workbench 'Copy' command to duplicate the "XDH1" icon
and rename it appropriately (ie. to "XDH2"). No other changes are needed.
If you are not using Wb 2.1 yet, you will have to append the sample entry
"devs/mountlist.xdh1" to your "DEVS:Mountlist" file (appending one copy for
each XFH partition you wish to use). The same considerations made before
apply: to change the target partition, edit the mountlist and change the
XDH1: line appropriately. Then edit the file "S:User-Startup" and add lines
like
Mount XDH1:
to automatically mount the XFH partitions at boot time.
If you don't like names like XDH1, refer to "advanced_usage.doc" for a way
to use a name of your choice (by modifying the mount entry).
When mounted, XFH will display a new icon on your Workbench screen. For
example, let's say that your DH1: partition is labelled "DATA"; XFH will call
its partition XFH_DATA. After the first installation, you may relabel the
volume as usual (XFH will use a file called '.xfhrc' in its root
directory to preserve the volume name across reboots).
The first step of installation is completed. Now reset and check that
everyting works correctly. Next steps assume that you have rebooted and
everything was ok.
By default, XFH doesn't compress files. To do that, invoke the XFH commodity
by using the hotkey (default is control alt x) or by double-clicking its
icon. You will be shown a list of all mounted XFH partitions. Choose one,
and activate the "Compression" checkbox. Now click on "Select Compressor..."
button, and you will see a list of available Xpk compressors. Select your
favourite compressor and efficiency and click on "OK". Currently, the best
choice is probably NUKE, since it features good compression percentage and
very fast decompression.
The "Low Memory" checkbox, when activated, tells XFH to reduce memory usage
as much as possible, even if that means reducing speed or compression
efficiency (this option is not fully implemented in the current version of
XFH-Handler).
When you have set up all the partitions, select "Save" from the
"Project" menu if you want to make the changes permanent, and click in the
close gadget to hide the window ("Save" will store the settings in the .info file of the commodity).
Now installation should be finished! Try to copy something to XDH1:, and try
from CLI to 'list' it in DH1: and in XDH1: to see if it has actually been
compressed (of course the file in DH1: should be shorter than the file which
is seen thru XDH1:).
Hint: if you want to compress all the files in your new XFH partition, the
faster way is to make a backup and restore of XDH1:.
Limitations
-----------
It should be stressed that a given XFH partition binds to a volume,
not to a device. This has consequences if XFH is used on a removable
media like a floppy disk. For example, trying to use XDF0 to access DF0
will work, but it will use the disk that was in the drive at the time
it was mounted and will not recognise a newly inserted disk.
The figures reported by the shell 'Info' command are somewhat
strange. The problem is that it isn't really possible to give
sensible figures for 'NumBlocks' and 'NumBlocksUsed' (except scanning
the entire XFH partition which would be ridicously slow). Currently,
their values are the same as those for the underlying file system.
Suggestions
-----------
Remember that, in this release of XFH-Handler, the decompressed file has to
stay in memory for all the time the file is open. If you are low on memory,
do not compress large files.
Do not compress files which stay open for a long time.
If you are using a printer spooler which creates temporary files on the hard
disk (like PrintManager by Nicola Salmoria), make sure they are not
automatically compressed by XFH (either turn compression off, or use DH1:
instead of XDH1:).
You may not want to have both DATA and XFH_DATA displayed as volumes on the
Workbench. To avoid that, edit "S:User-Startup" and add the line
Assign DATA: DISMOUNT
Moreover, since you may have references to DATA: (for example some assigns)
you may want to add this line also
Assign DATA: XDH1:
which will reroute every later access to the XFH partition. Note that to do
this trick, the label of DH1: must *NOT* be DH1 or any other name conflicting
with a device name. If it is your case, relabel the volume. After the
DISMOUNT trick, you will always access the XFH partition from Workbench, but
you will still be able to use both DH1: and XDH1: from CLI.
When doing backups, use DH1:, not XDH1:. This way you will use the
compressed data, thus requiring less disks. If your backup program provides
compression, turn the option off, since it will only slow things down.
Remember also to RESTORE to DH1:, or you will end up with a useless
partition!
Future Enhancements
-------------------
The following are a few loose ideas that may sometime be realised in future
versions of XFH:
- Support for other file formats. XFH is currently dependent on Xpk for
operation; however original aim was (and still is) a general compressor
front-end supporting Xpk, Zoo, Lharc, Lha etc.
- Support for custom formats through AREXX. This would make it possible to
write simple AREXX scripts that are called by XFH each time a request is made
to open a file that XFH does not recognise. The script can then take over if
it can handle the file and call the appropriate conversion programs. Thus,
one could take for example a standard gif-to-iff converter and write a simple
AREXX script that would make DeluxePaint suddenly read GIF pictures
- Setting of options individually for specific directories and/or
files (using AmigaDOS pattern matching). This would make it possible
to specify that files named '#?.lzh' must not be compressed, or that
directory listnings of ':net/uucp/news/' should not report the correct
file sizes (for speedup).
- Making the handler multi-treaded (like the ROM file systems)
(multi-treadedness means that a large Read()-request won't block a simple CD
command).
- Implementing asyncronous I/O for compression and decompression
(overlapping CPU time with IO time for large speedups).
Acknowledgments
---------------
XFH owes a lot to all the people that have helped me during development with
discussions, criticism, suggestions, bug reports etc. (not to mention the
steady demands for new versions when I was a bit slow bringing them out...).
I am especially indebted to Nicola Salmoria who wrote the nice gui front-end
to XFH, wrote most of this doc file and spent a lot of time discussing the
user interface of XFH with me. Many of the improvements in user-friendliness
since XFH 1.0 should be attributed to Nicola; any remaining inconveniences or
bugs are entirely due to me. My thanks should also go to Urban D. Müller for
helping me start the whole concept of the XFH back in the summer of 1991 -
without his help the XFH is not likely to have been realised.
XFH has been developed concurrently with my studies at the University of
Copenhagen, Department of Computer Science. The institute kindly provides
students with access to electronic mail and news; this also has been
essential in the creation of XFH.
Program history
---------------
(In the list, an asterix ('*') denotes BETA version that have not been
released and should not be used).
V1.00 Initial release.
V1.00a Bug in XObjExamine() fixed (it sometimes got the name of the root
dir wrong). Thanks to Matthias Scheler for reporting this bug.
V1.00b XFH: now obtains the values returned by ACTION_INFO and
ACTION_DISK_INFO from the underlying file system. This should
help problems with 'zero size file system' as experienced with
earlier versions of MFR for example. Thanks to Keith H. Brown
for pointing my attention to this problem.
V1.10* Beta version implementing option files and automatic compression.
V1.11* Beta with Xpk password support.
V1.12 New XPKPRIORITY option. Also fixes bugs with bad volume names and a
msgport that was unnessesarely public; thanks to Nicola Salmoria
for telling me about these problem.
V1.20* First beta with GUI and Arexx support.
V1.21* - Bug fix: Write() to a compressed file opened for reading now
fails with a return value of -1L (it used to return 0). Thanks to
Stefan Boberg for pointing me to this problem.
- Bug fix: Very nasty bug with file notes that caused XFH to crash
the system (happened because dos.library does not preserve the
fib->fib_Comment field between calls to ExNext()). Thanks to
Anders Holmér for taking the bother sending me "snail mail" to
let me know of this problem.
V1.22* Enhanced GUI support. XFH now mounts as a handler (instead of as a
disk-device based file system). Setting of options in mountlist.
V1.23* Minor bugfixes; some options to help compatibility with various
programs.
V1.30* First version with support for MODE_READWRITE. XFH will now retain
protection flags, filenotes and file dates when compressing files.
ALLOWAPPEND and COMPRESSREADWRITE option. Write() to MODE_OLDFILE
files.
V1.31* ACTION_RENAME_DISK; PORTNAME option; minor bug fixes.
V1.32 Full source provided now under GNU GPL. Source now uses RCS.
Changed default for option ALLOWAPPEND to ON. Also changed
option KILLSTARTUP to ON per default (the enforcer hits in
Format etc. were too bad).
V1.33* ACTION_PARENT_FH required for "MultiView" and "amigaguide.datatype"
done by Matthias Scheler
V1.34 support for xScan, source now for SAS/C Release 6
done by Matthias Scheler
V1.35* ACTION_EXAMINE_FH required for "gzip". Reduced code size (sprintf()
via exec.library), source now for SAS/C Release 6.51. Debugging output
is now done via KPrintF() so you can use "sushi" to intercept it.
done by Matthias Scheler
V1.36* ACTION_MAKE_LINK and ACTION_READ_LINK for hard- and softlink support
done by Matthias Scheler
V1.37* comments for fast directory scan are now created automatically
(option XSCAN)
done by Matthias Scheler
V1.38 added work arround for Envoy's buggy ACTION_FH_FROM_LOCK
(option ENVOYKLUDGE)
done by Matthias Scheler
V1.39 Fixed bug in builtin XSCAN support (V1.37) which caused XFH to crash
with error 87000004 sometimes. Thanks to Michael Sülmann for the final
hint about this bug.
done by Matthias Scheler